﻿using System;
using Maestro_Proveedores;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Maestro_Proveedores.Forms
{
    public partial class RegistrarRechazos : Form
    {
        /// <summary>
        /// Identificador del formulario, esta variable utilizada para controlar el acceso al formulario y para realizar la auditoria
        /// </summary>
        public static string TIPO = "078";
        /// <summary>
        /// Este formulario tiene la responsabilidad de registrar los rechazos que se le realizan a los proveedores de la Corporación. 
        /// </summary>
        public RegistrarRechazos()
        {
            InitializeComponent();
            this.fecha_rechazoDateTimePicker.MaxDate = DateTime.Now.Date;
            this.fecha_rechazoDateTimePicker.Value = DateTime.Now.Date;                       
        }
        
        private MAPICS.MAPICSDataSetTableAdapters.INF_OCTableAdapter iNF_OCTableAdapter = new MAPICS.MAPICSDataSetTableAdapters.INF_OCTableAdapter();
        private MAPICS.MAPICSDataSetTableAdapters.PROVEEDORESTableAdapter pROVEEDORESTableAdapter = new MAPICS.MAPICSDataSetTableAdapters.PROVEEDORESTableAdapter();
       
        private void RegistrarRechazos_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'cORPORATIVADataSet.PRV_RECHAZO' Puede moverla o quitarla según sea necesario.
            this.pRV_RECHAZOTableAdapter.Fill(this.cORPORATIVADataSet.PRV_RECHAZO);
                        
            //--- ahora si hago el filtro como debe ser...
            this.pRV_ENTREGAIMPERFECTA_MOTIVOTableAdapter1.FillByTipoTransaccion(this.cORPORATIVADataSet.PRV_ENTREGAIMPERFECTA_MOTIVO,Enums.EntregasImperfectas.Rechazo.ToString());           
        }

        private void buscar_Click(object sender, EventArgs e)
        {
            if (this.buscar_textBox.Text == "")
            {
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            try
            {
                //--- traigo los item's de la orden de compra
                if (this.iNF_OCTableAdapter.FillByCod_OC(this.mapicsDataSet.INF_OC, this.buscar_textBox.Text.Trim()) > 0)
                {
                    //---obtengo el ID del proveedor y busco el registro de dicho proveedor
//MessageBox.Show(".");
                    this.pROVEEDORESTableAdapter.FillByID(this.mapicsDataSet.PROVEEDORES, MAESTROS.ClassVarios.LimpiarCadena(this.mapicsDataSet.INF_OC[0].COD_PRV));
//MessageBox.Show(".");
                    if (this.mapicsDataSet.PROVEEDORES.Rows.Count == 0)
                    {
                        MessageBox.Show("El proveedor identificado con el ID " + MAESTROS.ClassVarios.LimpiarCadena(this.mapicsDataSet.INF_OC[0].COD_PRV) + " no esta activo en INFOR XA.");
                        return;
                    }
                    else
                    {
                        if (this.mapicsDataSet.PROVEEDORES[0].ID.Equals(string.Empty))
                        {
                            this.mapicsDataSet = new MAPICS.MAPICSDataSet();
                            this.pROVEEDORESTableAdapter.FillByID(this.mapicsDataSet.PROVEEDORES, this.mapicsDataSet.INF_OC[0].COD_PRV);
                           // MessageBox.Show(this.mapicsDataSet.PROVEEDORES[0].ID);
                        }
                        this.razon_socialTextBox.Text = this.mapicsDataSet.PROVEEDORES[0].RAZON_SOCIAL;
                        this.IDProveedorTextBox.Text = this.mapicsDataSet.PROVEEDORES[0].ID;
                        this.fecha_OC_textBox.Text = MAESTROS.ClassVarios.FechaMAPIC(this.mapicsDataSet.INF_OC[0].FECHA.ToString()).ToShortDateString();
                    }
                }
                else if (!this.buscar_textBox.Text.Equals("LISTO"))
                {
                    MessageBox.Show("Esta ordén de compra no esta registrada en el sistema.");
                }
              
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
            }
            Cursor.Current = Cursors.Default;
        }

        private void buscar_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                this.buscar_Click(null,null);   
            }                
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String query = "";
                
            //Cursor.Current = Cursors.WaitCursor;
             if (this.buscar_textBox.Text == "")
            {
                return;
            }
            else if (MessageBox.Show("¿Desea registrar el rechazo?", "", MessageBoxButtons.YesNo).Equals(DialogResult.No))
            {
                return;
            }
            try
            {
                int contador = 0;
                //--- verifico si se han definido todsos los motivos de rechazo.
                foreach (DataGridViewRow row in this.dataGridView1.Rows)
                {
                    if (((DataGridViewCheckBoxCell)row.Cells["IS_RECHAZADO"]).FormattedValue.ToString().Equals("True") && ((DataGridViewComboBoxCell)row.Cells["MOTIVO_RECHAZO"]).FormattedValue.ToString().Equals(string.Empty))
                    {                        
                      MessageBox.Show("Debe definir todos los motivos de rechazo.");
                      return;
                    }
                }

                string numero_registro = this.buscar_textBox.Text.Trim() + (new Random()).Next(DateTime.Now.Year) + (DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond).ToString();
                
                foreach (DataGridViewRow row in this.dataGridView1.Rows)
                {
                    if (this.IDProveedorTextBox.Text.Trim().Equals(string.Empty)) 
                    {
                        MessageBox.Show("La operacion NO se pudo realizar exitosamente, intente de nuevo.");
                        this.buscar_Click(null, null);
                        return;
                    }
                    if (((DataGridViewCheckBoxCell)row.Cells["IS_RECHAZADO"]).FormattedValue.ToString().Equals("True") || !((DataGridViewComboBoxCell)row.Cells["MOTIVO_RECHAZO"]).FormattedValue.ToString().Equals(string.Empty))
                    {
                        string motivoTemp = ((DataGridViewComboBoxCell)row.Cells["MOTIVO_RECHAZO"]).FormattedValue.ToString();
                        if (!((DataGridViewComboBoxCell)row.Cells["detalle"]).FormattedValue.ToString().Equals(string.Empty))
                        {
                            motivoTemp += " ("+((DataGridViewComboBoxCell)row.Cells["detalle"]).FormattedValue.ToString()+")";
                        }                        
                            contador+= 
                                this.pRV_RECHAZOTableAdapter.Insert_desdeAlmacen(
                                    this.IDProveedorTextBox.Text.Trim(), 
                                    this.mapicsDataSet.INF_OC[0].COD_OC.Trim(),
                                    int.Parse(row.Cells["nUMITEMDataGridViewTextBoxColumn"].Value.ToString()),
                                    this.observacionesTextBox.Text.Trim(),
                                    this.fecha_rechazoDateTimePicker.Value.Date,
                                    motivoTemp,
                                    numero_registro,
                                    row.Cells["DESC_ITEM"].Value.ToString().Trim(),
                                    "N/A",
                                    Session.Seg_USUARRow.USUARIO,
                                    row.Cells["COD_ITEM"].Value.ToString().Trim()
                                );                        
                    }
                }
                  
                if (contador > 0)
                {
                    this.buscar_textBox.Text = "Listo";
                    this.observacionesTextBox.Text = "";
                    this.razon_socialTextBox.Text = "";
                    this.IDProveedorTextBox.Text = "";
                    this.fecha_OC_textBox.Text = "";
                    this.buscar_Click(null,null);
                    MessageBox.Show("Se rechazarón  " + contador + "  ITEM's de la ordén de compra.");                    
                }
                else
                {
                    MessageBox.Show("NO se rechazarón articulos.");
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("...");
                Maestro_Proveedores.herramientas.MessageException.show(ex);
               // bs.CancelEdit();
            }
          //  Cursor.Current = Cursors.Default;
        }

        private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            //if (this.dataGridView1.CurrentCell.RowIndex == -1)
            //{                
            //    this.dataGridView1.Rows.Add();

            //}
            //---- si se despliega la lista de motivos de rechazo            
            if (this.dataGridView1.CurrentCell.RowIndex != -1 && this.dataGridView1.CurrentCell.ColumnIndex == 5) //&& !((DataGridViewComboBoxCell)this.dataGridView1.CurrentCell).FormattedValue.ToString().Equals(string.Empty)) 
            {
                if (((DataGridViewComboBoxCell)this.dataGridView1.CurrentCell).FormattedValue.ToString().ToLower().Equals("entrega imperfecta"))
                {
                    this.dataGridView1.CurrentRow.Cells[6].ReadOnly = false;
                    ((DataGridViewComboBoxCell)this.dataGridView1.CurrentRow.Cells[6]).Value = "Tiempo";
                }
                else
                {
                    this.dataGridView1.CurrentRow.Cells[6].ReadOnly = true;
                    ((DataGridViewComboBoxCell)this.dataGridView1.CurrentRow.Cells[6]).Value = null;                
                }
                //-- chequeo el check ¿RECHAZAR?
                ((DataGridViewCheckBoxCell)this.dataGridView1.CurrentRow.Cells[4]).Value = true;
                //-- cambio de celda para que se actulicen los valores
                this.dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[6];
            }
            //---- si se deschequea el check de ¿RECHAZAR?
            else if (this.dataGridView1.CurrentCell.RowIndex != -1 && this.dataGridView1.CurrentCell.ColumnIndex == 4 && ((DataGridViewCheckBoxCell)this.dataGridView1.CurrentRow.Cells[4]).Selected) //&& !((DataGridViewComboBoxCell)this.dataGridView1.CurrentCell).FormattedValue.ToString().Equals(string.Empty)) 
            {
             //   MessageBox.Show("..");
                ((DataGridViewComboBoxCell)this.dataGridView1.CurrentRow.Cells[5]).Value = null;
                ((DataGridViewComboBoxCell)this.dataGridView1.CurrentRow.Cells[6]).Value = null;
                //-- cambio de celda para que se actulicen los valores
                this.dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[6];
            }
        }

        private void helpPictureBox_Click(object sender, EventArgs e)
        {
            Help.ShowHelp(this, ConfiguracionDelSistema.manualDeUsuario, HelpNavigator.TableOfContents);
        }

        private void comoSeHaceLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start(ConfiguracionDelSistema.directorioVideoTutoriales + "registrarRechazos.wmv");
            }
            catch (Exception ex)
            {
                herramientas.MessageException.show(ex);
            }
            
        }
    }
}
